/*
 * CCVisu is a tool for visual graph clustering
 * and general force-directed graph layout.
 * This file is part of CCVisu.
 *
 * Copyright (C) 2005-2011  Dirk Beyer
 *
 * CCVisu is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * CCVisu is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with CCVisu; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * Please find the GNU Lesser General Public License in file
 * license_lgpl.txt or http://www.gnu.org/licenses/lgpl.txt
 *
 * Dirk Beyer    (firstname.lastname@uni-passau.de)
 * University of Passau, Bavaria, Germany
 */
package org.sosy_lab.ccvisu.readers;

public enum InputFormat {
  RSF("rsf", "Relational Standard Files", "Graph (relation) in Relational Standard Format (RSF)."),

  LAY("lay", "Layout Files", "Graph layout in textual format."),

  CVS("log", "CVS Log Files", "CVS log format (produce with 'cvs log -Nb')."),

  SVN("xml", "SVN Log Files in XML", "SVN log format (produce with 'svn log -v --xml')."),

  SRC("src", "Source Project Input", "Use the source of a software system as input."),

  DOX("xml", "Doxygen Output as XML Files", "Doxygen XML dump format (produce with 'doxygen')."),

  ODS("ods", "Open Document Spreadsheet Files", "ODS Spreadsheet."),

  AUX("aux", "Auxiliary Graph Input", "Graph is passed as data structure from a third-party client.");

  private String fileExtension = "";
  private String fileType      = "";
  private String description   = "";

  InputFormat(String fileExtension, String fileType, String description) {
    this.fileExtension = fileExtension;
    this.fileType = fileType;
    this.description = description;
  }

  /**
   * @return the fileExtension
   */
  public String getFileExtension() {
    return '.' + fileExtension;
  }

  /**
   * @return the formatName
   */
  public String getFileType() {
    return fileType;
  }

  /**
   * @return the description of the input format
   */
  public String getDescription() {
    return description;
  }

  public static InputFormat getInFormatOfFile(String fileName) {
    for (InputFormat inputFormat : InputFormat.values()) {
      if (fileName.endsWith(inputFormat.fileExtension)) {
        return inputFormat;
      }
    }
    return InputFormat.RSF;
  }
}
